home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / s390 / include / asm / thread_info.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.5 KB  |  118 lines

  1. /*
  2.  *  include/asm-s390/thread_info.h
  3.  *
  4.  *  S390 version
  5.  *    Copyright (C) IBM Corp. 2002,2006
  6.  *    Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
  7.  */
  8.  
  9. #ifndef _ASM_THREAD_INFO_H
  10. #define _ASM_THREAD_INFO_H
  11.  
  12. #ifdef __KERNEL__
  13.  
  14. /*
  15.  * Size of kernel stack for each process
  16.  */
  17. #ifndef __s390x__
  18. #define THREAD_ORDER 1
  19. #define ASYNC_ORDER  1
  20. #else /* __s390x__ */
  21. #ifndef __SMALL_STACK
  22. #define THREAD_ORDER 2
  23. #define ASYNC_ORDER  2
  24. #else
  25. #define THREAD_ORDER 1
  26. #define ASYNC_ORDER  1
  27. #endif
  28. #endif /* __s390x__ */
  29.  
  30. #define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)
  31. #define ASYNC_SIZE  (PAGE_SIZE << ASYNC_ORDER)
  32.  
  33. #ifndef __ASSEMBLY__
  34. #include <asm/processor.h>
  35. #include <asm/lowcore.h>
  36.  
  37. /*
  38.  * low level task data that entry.S needs immediate access to
  39.  * - this struct should fit entirely inside of one cache line
  40.  * - this struct shares the supervisor stack pages
  41.  * - if the contents of this structure are changed, the assembly constants must also be changed
  42.  */
  43. struct thread_info {
  44.     struct task_struct    *task;        /* main task structure */
  45.     struct exec_domain    *exec_domain;    /* execution domain */
  46.     unsigned long        flags;        /* low level flags */
  47.     unsigned int        cpu;        /* current CPU */
  48.     int            preempt_count;    /* 0 => preemptable, <0 => BUG */
  49.     struct restart_block    restart_block;
  50. };
  51.  
  52. /*
  53.  * macros/functions for gaining access to the thread information structure
  54.  */
  55. #define INIT_THREAD_INFO(tsk)            \
  56. {                        \
  57.     .task        = &tsk,            \
  58.     .exec_domain    = &default_exec_domain,    \
  59.     .flags        = 0,            \
  60.     .cpu        = 0,            \
  61.     .preempt_count    = 1,            \
  62.     .restart_block    = {            \
  63.         .fn = do_no_restart_syscall,    \
  64.     },                    \
  65. }
  66.  
  67. #define init_thread_info    (init_thread_union.thread_info)
  68. #define init_stack        (init_thread_union.stack)
  69.  
  70. /* how to get the thread information struct from C */
  71. static inline struct thread_info *current_thread_info(void)
  72. {
  73.     return (struct thread_info *)((*(unsigned long *) __LC_KERNEL_STACK)-THREAD_SIZE);
  74. }
  75.  
  76. #define THREAD_SIZE_ORDER THREAD_ORDER
  77.  
  78. #endif
  79.  
  80. /*
  81.  * thread information flags bit numbers
  82.  */
  83. #define TIF_SYSCALL_TRACE    0    /* syscall trace active */
  84. #define TIF_NOTIFY_RESUME    1    /* callback before returning to user */
  85. #define TIF_SIGPENDING        2    /* signal pending */
  86. #define TIF_NEED_RESCHED    3    /* rescheduling necessary */
  87. #define TIF_RESTART_SVC        4    /* restart svc with new svc number */
  88. #define TIF_SYSCALL_AUDIT    5    /* syscall auditing active */
  89. #define TIF_SINGLE_STEP        6    /* deliver sigtrap on return to user */
  90. #define TIF_MCCK_PENDING    7    /* machine check handling is pending */
  91. #define TIF_USEDFPU        16    /* FPU was used by this task this quantum (SMP) */
  92. #define TIF_POLLING_NRFLAG    17    /* true if poll_idle() is polling 
  93.                        TIF_NEED_RESCHED */
  94. #define TIF_31BIT        18    /* 32bit process */ 
  95. #define TIF_MEMDIE        19
  96. #define TIF_RESTORE_SIGMASK    20    /* restore signal mask in do_signal() */
  97. #define TIF_FREEZE        21    /* thread is freezing for suspend */
  98.  
  99. #define _TIF_SYSCALL_TRACE    (1<<TIF_SYSCALL_TRACE)
  100. #define _TIF_NOTIFY_RESUME    (1<<TIF_NOTIFY_RESUME)
  101. #define _TIF_RESTORE_SIGMASK    (1<<TIF_RESTORE_SIGMASK)
  102. #define _TIF_SIGPENDING        (1<<TIF_SIGPENDING)
  103. #define _TIF_NEED_RESCHED    (1<<TIF_NEED_RESCHED)
  104. #define _TIF_RESTART_SVC    (1<<TIF_RESTART_SVC)
  105. #define _TIF_SYSCALL_AUDIT    (1<<TIF_SYSCALL_AUDIT)
  106. #define _TIF_SINGLE_STEP    (1<<TIF_SINGLE_STEP)
  107. #define _TIF_MCCK_PENDING    (1<<TIF_MCCK_PENDING)
  108. #define _TIF_USEDFPU        (1<<TIF_USEDFPU)
  109. #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
  110. #define _TIF_31BIT        (1<<TIF_31BIT)
  111. #define _TIF_FREEZE        (1<<TIF_FREEZE)
  112.  
  113. #endif /* __KERNEL__ */
  114.  
  115. #define PREEMPT_ACTIVE        0x4000000
  116.  
  117. #endif /* _ASM_THREAD_INFO_H */
  118.